package server;

import server.deploy.FilterDef;
import server.deploy.FilterMap;

import javax.servlet.ServletContext;

public interface Context extends Container {
    public ServletContext getServletContext();
    //当前应用是否可用
    public boolean getAvailable();
    //设置应用是否可用
    public void setAvailable(boolean available);
    //返回是否配置成功
    public boolean getConfigured();
    //设置配置是否成功
    public void setConfigured(boolean configured);
    //添加过滤器名与拦截路径及拦截Servlet名之间的映射关系
    public void addFilterMap(FilterMap filterMap);
    //删除过滤器名与拦截路径及拦截Servlet名之间的映射关系
    public void removeFilterMap(FilterMap filterMap);
    //返回该应用中所有的过滤器名与拦截路径及拦截Servlet名之间的映射关系
    public FilterMap[] findFilterMaps();

    public void addFilterDef(FilterDef filterDef);
    public FilterDef findFilterDef(String filterName);
    public FilterDef[] findFilterDefs();
    public void removeFilterDef(FilterDef filterDef);

    //根据匹配路径返回Wrapper名称
    public String findServletMapping(String pattern);
    //返回所有匹配路径
    public String[] findServletMappings();
    //添加匹配路径与wrapper名映射
    public void addServletMapping(String pattern, String name);

    //返回是否支持重加载
    public boolean getReloadable();
    //设置是否支持重加载
    public void setReloadable(boolean reloadable);
    //重加载
    public void reload();
    //返回所有监听器的全类名
    public String[] findApplicationListeners();

    public void setApplicationListeners(Object listeners[]);
    public Object[] getApplicationListeners();
    public void addApplicationListener(String listener);
    //返回Session的超时时间 单位为分钟
    public int getSessionTimeout();
    public void setSessionTimeout(int timeout);
    //根据错误状态码返回转发路径
    String findErrorPage(int status);
    //返回欢迎文件列表
    public String[] findWelcomeFiles();
}
